thin.imports('/public/home/css/global.project.css');
thin.imports('/public/configure/conf.wx.js');

thin.imports('/public/plug/wxshare/jweixin-1.2.0.js', function() {
	wx.ready(function() {
		wx.checkJsApi({
			jsApiList: ['chooseWXPay'], // 需要检测的JS接口列表，所有JS接口列表见附录2,
			success: function(res) {
				// 以键值对的形式返回，可用的api值true，不可用为false
				// 如：{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
				//alert(JSON.stringify(res));
			}
		});
		factory.request('_wechat_paysign', chooseWXPay);
	});

	wx.error(function(res) {
		// config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
		// alert(JSON.stringify(res));
	});
});

thin.use(function() {

	// 初始化页面
	initPage();

	// 绑定支付按钮
	$('#btn-pay').on('click', submitToPay);

});

var __getdata_jsapi = {},
	__getdata_order = {},
	__getdata_paysign = {},
	__getdata_notify = {},
	data_downorder,
	data_jsapi,
	data_opt_pay,
	downNumber,
	reurl,
	isSW = false;

// 初始化页面
function initPage() {
	var param = tool.getSearch('param', 3),
		param_data;

	try {
		param_data = JSON.parse(param);
	} catch(e) {
		//TODO handle the exception
		tool.p('地址栏参数#param#不正确');
		return;
	}

	var data_opt = {};

	try {
		data_opt['pay_mark'] = param_data.mark;
		data_opt['project_id'] = param_data.proid;
		reurl = param_data.reurl;
	} catch(e) {
		//TODO handle the exception
		tool.p('无法获取地址栏参数#param#的属性');
		return;
	}

	var money = 0,
		title = '';
	if(data_opt.pay_mark == 'cp') {
		money = 398;
		title = '项目评估费';
		// 显示优惠码开关
		$('#coupon-code-box').show();
		// 监听优惠码开关
		$('#couponSW').on('change', function() {
			var ischecked = $(this).prop('checked');
			if(ischecked) {
				$('#coupon-code').show();
				isSW = true;
			} else {
				$('#coupon-code').hide();
				isSW = false;
			}
		});
	} else if(data_opt.pay_mark == 'cx') {
		money = 998;
		title = '缴纳诚信保证金';
		// 显示保证金协议
		$('.weui-agree').show();
		// 监听保证金协议
		$('#weuiAgree').on('change', function() {
			var ischecked = $(this).prop('checked');
			if(ischecked) {
				$('#btn-pay').removeClass('weui-btn_disabled').on('click', submitToPay);
			} else {
				$('#btn-pay').addClass('weui-btn_disabled').off('click');
			}
		});
	} else {
		return;
	}

	$('[layout-mark=pa-title]').html(title);
	$('[layout-mark=pa-price]').html('￥ ' + money);

	$('#pay-ready').show();

	__getdata_order = data_opt;
	__getdata_order['title'] = title;
	__getdata_order['tradeType'] = 'JSAPI';
}

// 开始支付
function submitToPay() {
	if(isSW) {
		var code = $.trim($('#couponCD').val());
		if(code == '') {
			$.toptip('请输入优惠码', 'error');
			return;
		}
		__getdata_order['code'] = code;
	} else {
		delete __getdata_order['code'];
	}

	// 开始下单
	$.showLoading();
	factory.request('_wechat_order');
}

// 下单回调
function __complete_order(res) {
	if(res.status == 201) {
		data_downorder = res.data;
		inspectVersion();
	} else {
		$.hideLoading();
		$.toptip(res.error, 'error');
	}
}

// 检测微信版本
function inspectVersion() {
	var nav = navigator.userAgent;
	var reg = new RegExp("MicroMessenger/([^&]*)");
	var v = nav.match(reg)[1][0];

	__getdata_paysign['prepay_id'] = data_downorder.prepay_id;
	if(parseInt(v) > 5) {
		factory.request('_wechat_paysign', onBridgeReady);
	} else {
		// 初始化WX-JS-JDK
		__getdata_jsapi['url'] = window.location.href;
		factory.request('_wechat_jsapi');
	}
}

// 初始化WX-JS-JDK回调
function __complete_jsapi(res) {
	if(res.status == 200) {
		var list = res.data;
		data_jsapi = res.data;
		wx.config({
			debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
			appId: list.appId, // 必填，公众号的唯一标识
			timestamp: list.timestamp.toString(), // 必填，生成签名的时间戳
			nonceStr: list.noncestr, // 必填，生成签名的随机串
			signature: list.signature, // 必填，签名，见附录1
			jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
		});
	} else {
		$.toptip(res.error, 'error');
	}
}

// 支付签名回调
function __complete_paysign(res, unkn) {
	$.hideLoading();
	if(res.status == 201) {
		data_opt_pay = res.data;
		unkn();
	} else {
		$.toptip(res.error, 'error');
	}
}

// 点击按钮开始支付5.0-
function chooseWXPay() {
	wx.chooseWXPay({
		timestamp: data_opt_pay.timeStamp.toString(),
		nonceStr: data_opt_pay.nonceStr,
		package: data_opt_pay.package,
		signType: data_opt_pay.signType,
		paySign: data_opt_pay.paySign,
		complete: function(res) {
			// 支付成功后的回调函数
			if(res.errMsg == 'chooseWXPay:ok') {
				pollingOrder();
			} else {
				// fail
			}
		},
		fail: function(res) {
			//alert(JSON.stringify(res));
		}
	});
}

// 点击按钮开始支付5.0+
function onBridgeReady() {
	WeixinJSBridge.invoke(
		'getBrandWCPayRequest', {
			"appId": data_opt_pay.appId,
			"timeStamp": data_opt_pay.timeStamp.toString(),
			"nonceStr": data_opt_pay.nonceStr,
			"package": data_opt_pay.package,
			"signType": data_opt_pay.signType,
			"paySign": data_opt_pay.paySign
		},
		function(res) {
			if(res.err_msg == "get_brand_wcpay_request:ok") {
				// 支付成功
				pollingOrder();
			} else {
				// 取消支付 | res.err_msg == 'get_brand_wcpay_request:cancel'

			}
		}
	);
}

// 查询支付结果
function pollingOrder() {
	$.showLoading();
	// 查询支付结果
	__getdata_notify['project_id'] = __getdata_order.project_id;
	__getdata_notify['pay_mark'] = __getdata_order.pay_mark;
	setTimeout(function() {
		downNumber = 1440;
		factory.request('_wechat_notify');
	}, 1000);
}

// 查询支付结果回调
function __complete_notify(res) {
	if(res.status == 200) {
		if(res.data == 1) {
			/*if(__getdata_notify.pay_mark == 'cp') {
				window.location.href = '/mobile/project/review?proid=18#operate';
			} else if(__getdata_notify.pay_mark == 'cx') {
				window.location.href = '/mobile/chain/fund';
			} else {
				window.location.href = '/mobile/service/member';
			}*/
			window.location.href = reurl || '/mobile/service/member';
			return;
		}
	}
	// 没有结果，继续查单
	--downNumber;
	if(downNumber > 0) {
		setTimeout(function() {
			factory.request('_wechat_notify');
		}, 5000);
	} else {

	}
}